package main

import (
	"encoding/json"
	"strconv"
)

// TotalManageCount 获取已注册私募基金管理人的数量
func TotalManageCount() int {
	result := TotalCount()
	return result["totalManagerCount"]
}

// TotalCount 获取AMAC网站统计的总数据。
func TotalCount() map[string]int {
	resp, err := cli.R().
		SetQueryParam("rand", random()).
		SetBody("{}").
		Post(totalCountURL)

	if err != nil {
		return nil
	}
	var result = make(map[string]int)
	if err = json.Unmarshal(resp.Body(), &result); err != nil {
		return nil
	}
	return result
}

// QueryPage 分页查找。
func QueryPage(page, size string) *AMACIntro {
	resp, err := cli.R().
		SetQueryParam("rand", random()).
		SetQueryParam("page", page).
		SetQueryParam("size", size).
		SetBody("{}").
		Post(pageURL)

	if err != nil {
		return nil
	}
	var result = &AMACIntro{}
	if err = json.Unmarshal(resp.Body(), result); err != nil {
		return nil
	}
	return result
}

// DetailPage 获取基金机构的详细信息页。
func DetailPage(endpoint string) []byte {
	resp, err := cli.R().SetHeader("Cookie", "look=first;").Get(detailURL + endpoint)
	if err != nil {
		return nil
	}
	return resp.Body()
}

// AllUrlID 获取所有的URL中的ID.html
func AllUrlID() []string {
	total := TotalManageCount()
	page := 0
	size := 100
	var result = make([]string, total, total)
	for ; page*size < total; page++ {
		intro := QueryPage(strconv.Itoa(page), strconv.Itoa(size))
		for _, content := range intro.Content {
			result = append(result, content.URL)
		}
	}
	return nil
}
